package com.vandagroup.md5;

public class ByteStrCvr{
	public java.lang.String byteToStr(byte[] inbyte){
		String bytestring=new String("");
		for(int i=0;i<inbyte.length;i++){
			byte highbyte=(byte)(inbyte[i]&0xf0);
			byte lowbyte=(byte)(inbyte[i]&0x0f);
			byte tmpbyte=highbyte;
			if((tmpbyte&0x80)==(byte)0x80){
				highbyte=(byte)(highbyte|0x7f);
				highbyte>>>=4;
				highbyte+=0x08;
			}else{
				highbyte>>>=4;
				highbyte=(byte)(highbyte&0x0f);
			}
   
			char high=(highbyte>=0x0a?(char)(highbyte+0x57):(char)(highbyte+0x30));
    
			char low=(lowbyte>=0x0a?(char)(lowbyte+0x57):(char)(lowbyte+0x30));

			String tmp=String.valueOf(high);
			bytestring+=tmp;
			tmp=String.valueOf(low);
			bytestring+=tmp;
   
		}
		return bytestring;
	}


	public byte[] strToByte(java.lang.String instr) throws CvrException{
		if(instr==null||instr.equals("")){
			 throw new CvrException("input string is null");
		}
		instr.trim();
		if((instr.length()%2)!=0){
			throw new CvrException("input string length error");
		}
		byte[] bytearray=new byte[instr.length()/2];
		for(int i=0;i<instr.length();i++){
			int k=i++;
			byte highbyte;
			byte lowbyte;
			if(instr.charAt(k)>='a'){
				highbyte=(byte)((instr.charAt(k)-0x57)&0x0f);
			}else{
				highbyte=(byte)(instr.charAt(k)&0x0f);
			}
			if(instr.charAt(i)>='a'){
				lowbyte=(byte)(((instr.charAt(i)-0x57)&0x0f));
			}else{
				lowbyte=(byte)(instr.charAt(i)&0x0f);
			}
    
			highbyte<<=4;
     
			bytearray[i/2]=(byte)(highbyte|lowbyte);
		}
		return bytearray;
	}
}